/* Copyright 2012 Alejandro Alonso Mayo
This file is part of jmtools.

jmtools is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

jmtools is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License
along with jmtools.  If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef _CONFIGFILE_H_
#define _CONFIGFILE_H_

//System headers
#include <string>
#include <list>

//Project headers
#include <jmtools/win.h>
#include <jmtools/ConfigGroup.h>

namespace JMTools
{
	namespace Config
	{
#ifdef WIN
		class JMTOOLS_API ConfigFile {
#else
		class ConfigFile {
#endif
		private:			
		protected:
			std::string name;
			std::list<ConfigGroup *> groups;
		public:
			//Constructors and Destructors
			ConfigFile(std::string name);
			virtual ~ConfigFile(void);

			//Gettters and Setters
			std::string getName();
			void setName(std::string name);
			ConfigGroup * getGroup(std::string name);

			//Others
			void addGroup(ConfigGroup * group);
			
			virtual bool load()=0;
			virtual void save()=0;
		};
	}
}
#endif

